package model

type GSys struct {
	RedisC *RedisConfig `json:"redis"`
	WdbC   *DBConfig    `json:"wdb"`
	MqC    *MqConfig    `json:"mq"`
	NatsC  *NatsConfig  `json:"nats"`
}

type RedisConfig struct {
	ServerConfigs []*PoolConfig `json:"server_configs"`
}

type PoolConfig struct {
	Name            string `json:"name"`
	Scheme          string `json:"scheme"`
	Server          string `json:"server"`
	DB              int    `json:"db"`
	Username        string `json:"username"`
	Password        string `json:"password"`
	MaxRetries      int    `json:"max_retries"`
	DialTimeout     int    `json:"dial_timeout"`
	ReadTimeout     int    `json:"read_timeout"`
	WriteTimeout    int    `json:"write_timeout"`
	MinIdleConns    int    `json:"min_idle_conns"`
	MaxIdleConns    int    `json:"max_idle_conns"`
	ConnMaxIdleTime int    `json:"conn_max_idle_time"`
}

type DBConfig struct {
	ProxyConfigs []*DBC `json:"proxy_configs"`
}

type DBC struct {
	Name            string `json:"name"`
	DriverName      string `json:"driver_name"`
	User            string `json:"user"`
	Password        string `json:"password"`
	Host            string `json:"host"`
	Port            string `json:"port"`
	SchemaName      string `json:"schemaname"`
	MaxOpenConns    uint32 `json:"max_open_conns"`
	MaxIdleConns    uint32 `json:"max_idle_conns"`
	ConnMaxLifetime uint32 `json:"conn_max_lifetime"`
	Dateline        int64  `json:"dateline"`
}

type MqConfig struct {
	BrokerConfigs []*MqC `json:"broker_configs"`
}

type MqC struct {
	Name        string `json:"name"`
	User        string `json:"user"`
	Password    string `json:"password"`
	Host        string `json:"host"`
	Port        string `json:"port"`
	VirtualHost string `json:"virtual_host"`
}

type NatsConfig struct {
	Server string `json:"server"`
}
